Colin Walters [Mon, 8 Jul 2013 01:35:15 +0000 (21:35 -0400)]
Add a few more bits to EXTRA_DIST
Colin Walters [Sun, 7 Jul 2013 22:14:53 +0000 (18:14 -0400)]
Remove stub daemon code
This really shouldn't have lived so long...it does nothing now, and we
should probably just be exposing an API for packagekit anyways.
Colin Walters [Sun, 7 Jul 2013 18:37:59 +0000 (14:37 -0400)]
Remove built in "triggers"
Originally, the idea was that clients would replicate "OS/tree"s from
a build server, but we'd run things like "ldconfig" on the client.
This was to allow adding e.g. the nVidia binary driver.
However, the triggers were the only thing in the system at the moment
that really had expected knowledge of the *contents* of the OS, like
the location of binaries.
For now, it's architecturally cleaner if we move the burden of
triggers to the tree builder (e.g. gnome-ostree or RPM). Eventually
we may want OSTree to assist with this type of thing (perhaps
something like RPM %ghost), but this is the right thing to do now.
Colin Walters [Sun, 7 Jul 2013 18:30:01 +0000 (14:30 -0400)]
admin: Fix various compiler warnings
Colin Walters [Sun, 7 Jul 2013 17:45:18 +0000 (13:45 -0400)]
admin: Also delete unsed boot directories
My VM filled up /boot. Oops.
Colin Walters [Sun, 7 Jul 2013 16:42:02 +0000 (12:42 -0400)]
admin: Split up the monstrous ot-admin-functions.c
Now util, cleanup, and functions.
Colin Walters [Sun, 7 Jul 2013 16:27:44 +0000 (12:27 -0400)]
Switch to libgsystem local allocation macros
And drop our compatibility wrapper.
Colin Walters [Sat, 29 Jun 2013 15:45:53 +0000 (11:45 -0400)]
[INCOMPATIBLE CHANGE] Implement new deployment model
See https://wiki.gnome.org/OSTree/DeploymentModel2
This is a major rework of the on-disk filesystem layout, and the boot
process. OSTree now explicitly supports upgrading kernels, and these
upgrades are also atomic.
The core concept of the new model is the "deployment list", which is
an ordered list of bootable operating system trees. The deployment
list is reflected in the bootloader configuration; which has a kernel
argument that tells the initramfs (dracut) which operating system root
to use.
Invidiual notable changes that come along with this:
1) Operating systems should now come with their etc in usr/etc; OSTree
will perform a 3-way merge at deployment time, and place etc in
the actual root. This avoids the need for a bind mount, and is
just a lot cleaner.
2) OSTree no longer bind mounts /root, /home, and /tmp. It is expected
that the the OS/ has these as symbolic links into /var.
At the moment, OSTree only supports managing syslinux; other
bootloader backends will follow.
Colin Walters [Fri, 5 Jul 2013 21:29:07 +0000 (17:29 -0400)]
deploy: Error out if we see usr/etc
This version of the code doesn't know what to do with new-model trees,
so just abort if we see that. We'll likely never care about upgrades
from 1.0 to 2.0.
Colin Walters [Fri, 5 Jul 2013 20:51:47 +0000 (16:51 -0400)]
core: Allow '.' in refspecs too
For version numbers.
Colin Walters [Fri, 5 Jul 2013 20:12:10 +0000 (16:12 -0400)]
Add "trivial-httpd" builtin, use it in tests
A simple HTTP server implementation is so few lines of code when one
is linking to libsoup anyways, so let's just have one here in ostree
that will be used for the test suite.
This allows us to run the archive tests that previously required
apache even in gnome-ostree.
Colin Walters [Tue, 2 Jul 2013 15:24:07 +0000 (11:24 -0400)]
tests: Pull from file:/// only works with archive-z right now
Colin Walters [Tue, 2 Jul 2013 02:35:54 +0000 (22:35 -0400)]
pull: Make fetcher work for file:/// URIs too
Even if very suboptimally, for now; we copy the files, then copy them
again.
The obvious long term plan is to merge pull-local and pull together,
but truly optimizing that requires the pull code to know how to use
the OstreeRepo APIs when operating on local repositories (as
pull-local does), rather than assuming the remote is an archive-z
fetched over HTTP.
Colin Walters [Mon, 1 Jul 2013 14:18:26 +0000 (10:18 -0400)]
Add support for deleting refs
The internal API will be used by admin, and "ostree refs --delete"
is handy for interactive management.
Colin Walters [Sat, 29 Jun 2013 18:51:08 +0000 (14:51 -0400)]
Add "refs" builtin
This is just useful to look at before pruning, etc.
Colin Walters [Sat, 29 Jun 2013 18:02:17 +0000 (14:02 -0400)]
Add a bit more testing for prune
Colin Walters [Sat, 29 Jun 2013 17:48:26 +0000 (13:48 -0400)]
Extract prune logic into an internal API
This will be used by ostree admin deploy.
Colin Walters [Sat, 29 Jun 2013 15:44:26 +0000 (11:44 -0400)]
pull-local: Support --remote argument
For offline upgrades, pull-local can now write the refs into a
specific remote, rather than using the local heads.
Colin Walters [Sat, 29 Jun 2013 15:42:33 +0000 (11:42 -0400)]
core: Add "refspec" which is remote:refname
This allows an unambiguous reference; otherwise, it was too easy to
have confusion between local heads and remotes.
Colin Walters [Sat, 29 Jun 2013 15:43:31 +0000 (11:43 -0400)]
gioutils: Many new utility functions
Reading symbolic links becomes a much more common thing now.
Colin Walters [Sun, 23 Jun 2013 21:56:14 +0000 (17:56 -0400)]
prepare-root: Only bind mount /home, /tmp, /root if they are directories
What we expect for new systems is for these to be symbolic links:
/home -> /sysroot/home
etc.
Colin Walters [Fri, 14 Jun 2013 23:45:40 +0000 (19:45 -0400)]
core: Port more callsites to gs_file_enumerator_iterate()
See previous commit.
Colin Walters [Fri, 14 Jun 2013 23:14:35 +0000 (19:14 -0400)]
core: Update libgsystem, port some uses of GFileEnumerator
This makes the code *so* much nicer.
Colin Walters [Sat, 8 Jun 2013 18:15:43 +0000 (14:15 -0400)]
pull-local: Fix race condition pointed out by Benjamin
We could drop into g_main_loop_run() after the worker
thread had called g_main_loop_quit().
Fix this by following the pattern suggested by Ryan of a while loop
around our termination condition, and g_main_context_iteration().
Colin Walters [Sat, 8 Jun 2013 16:58:44 +0000 (12:58 -0400)]
pull-local: Fix race condition
https://bugzilla.gnome.org/show_bug.cgi?id=701861
Colin Walters [Tue, 4 Jun 2013 17:18:36 +0000 (13:18 -0400)]
dracut: Add ostree-remount
Linux creates a copy of the soure mount flags when creating a bind
mount; if the source is read-only, then the bind mount is.
The problem is that systemd will remount the rootfs read/write, but
each mount (/home, /var etc.) will still be read-only. We need to
remount every bind mount except for /usr to read-write too.
This only "worked" with the old ostree-switch-root because it
effectively force mounted the rootfs read-write always, ignoring the
"ro" flag.
Colin Walters [Tue, 4 Jun 2013 00:49:07 +0000 (20:49 -0400)]
dracut: Also ensure we're using the systemd module
I can't work out how this happens otherwise in Fedora...
Colin Walters [Mon, 3 Jun 2013 18:12:40 +0000 (14:12 -0400)]
Add --with-dracut
This installs a Dracut module which parses the ostree= kernel command
line argument, and if given, sets up the OS/ at /sysroot, which
systemd's switch-root then moves into. This only works if dracut is
configured to use systemd itself.
Colin Walters [Mon, 3 Jun 2013 02:18:19 +0000 (22:18 -0400)]
ostree-prepare-root: Don't require an extraneous argument
Colin Walters [Mon, 3 Jun 2013 01:41:08 +0000 (21:41 -0400)]
ostree-prepare-root: Parse /proc/cmdline, make RPRIVATE, set up /sysroot
This does everything we need except for the actual switch-root.
Colin Walters [Sun, 2 Jun 2013 19:36:56 +0000 (15:36 -0400)]
ostree-prepare-root: New binary, used for systemd-in-initramfs setups
Rather than attempting to hack up the "switch-root" functionality of
systemd, this binary allows us to simply prepare the root before we
switch into it.
Colin Walters [Fri, 31 May 2013 17:09:27 +0000 (13:09 -0400)]
Drop support for generating initramfs images client side using dracut
This is the responsibility of whatever is generating filesystem trees.
Colin Walters [Thu, 30 May 2013 22:32:46 +0000 (18:32 -0400)]
Fold ostree-pull into main binary
The rationale for the separation was always kind of weak; I want to
refactor the command line argument parsing, and it was complicating
things.
Colin Walters [Mon, 27 May 2013 13:29:33 +0000 (09:29 -0400)]
pull: Exit cleanly with an error on failure to fetch refs
Colin Walters [Mon, 27 May 2013 13:29:05 +0000 (09:29 -0400)]
upgrade: Actually prune deployments again
That was a rather critical logic error...
Colin Walters [Fri, 17 May 2013 01:42:24 +0000 (21:42 -0400)]
TODO: Update
Colin Walters [Thu, 16 May 2013 19:37:49 +0000 (15:37 -0400)]
upgrade: Actually deploy upgraded tree again
I need a brown paper bag for this one...
Colin Walters [Thu, 16 May 2013 12:29:20 +0000 (08:29 -0400)]
admin: Add -r option to upgrade to initiate a reboot if tree changes
$ ostree admin upgrade -r
is convenient to fire off inside a VM and come back to it later.
Colin Walters [Wed, 15 May 2013 12:18:53 +0000 (08:18 -0400)]
upgrade: Don't require specification of osname
Since this is a highly visible command, let's have a sane default and
upgrade the currently running OS.
Colin Walters [Wed, 1 May 2013 23:15:06 +0000 (19:15 -0400)]
Add a --version argument that also outputs features
And use it in the tests to skip libarchive tests when the build
doesn't support it.
Colin Walters [Wed, 1 May 2013 22:43:01 +0000 (18:43 -0400)]
archive-test: Handle umask of 022 or 002
Red Hat appears to default to 002, whereas Debian systems default
to 022. Fun.
Colin Walters [Wed, 1 May 2013 19:26:21 +0000 (15:26 -0400)]
Install tests
Matching https://live.gnome.org/GnomeGoals/InstalledTests
Colin Walters [Wed, 1 May 2013 16:15:02 +0000 (12:15 -0400)]
checkout: Add --allow-noent option
This is useful for the gnome-ostree build system where each build is
one commit, but it's split up into /runtime /devel /debug etc. trees.
Ideally we wouldn't have a /debug subdirectory for "noarch"
components for example.
So add an option to not error out if the given path doesn't exist in
the commit.
Colin Walters [Tue, 30 Apr 2013 23:34:20 +0000 (19:34 -0400)]
repo: Fix race condition in async checkout
When multiple threads need to uncompress an object, there was
a race condition where thread A could get EEXIST, unlink,
then thread B calls linkat(), then thread A tries to link() but
fails.
We can just loop in this case.
Colin Walters [Tue, 30 Apr 2013 02:08:56 +0000 (22:08 -0400)]
libotutil: Drop is-hidden from fast queryinfo
Since now we look at .hidden files and bang on the mainloop for every
file lookup if that's specified =(
Colin Walters [Mon, 29 Apr 2013 18:04:48 +0000 (14:04 -0400)]
libgsystem: Update to latest
Colin Walters [Fri, 26 Apr 2013 22:15:51 +0000 (18:15 -0400)]
deploy: Swap current symlink only after updating the kernel
While this still isn't fully atomic (that depends on the bootloader),
this better ensures that the deployed kernel is booted with the
intended tree. For example, if we get ENOSPC when writing out the
kernel, we won't have swapped the symlink.
Colin Walters [Mon, 22 Apr 2013 16:27:47 +0000 (12:27 -0400)]
libgsystem: Update
Colin Walters [Sun, 21 Apr 2013 14:39:27 +0000 (10:39 -0400)]
pull-deploy: Tweak documentation to show using it for switching trees
Colin Walters [Mon, 15 Apr 2013 16:50:58 +0000 (12:50 -0400)]
admin: Use linkcopy_sync_data() for initramfs instead of rename()
It's possible (likely even) that /tmp is on a separate filesystem; in
that case, a raw rename() is going to fail.
Saw this on the ostree.gnome.org builder.
Colin Walters [Mon, 8 Apr 2013 20:55:35 +0000 (16:55 -0400)]
prune: Use g_format_size() so we get a human-readable number
We don't really care about the precise bytes.
Colin Walters [Wed, 3 Apr 2013 04:50:16 +0000 (00:50 -0400)]
waitablequeue: Only use API from GLib 2.34
As intended.
Colin Walters [Tue, 2 Apr 2013 02:23:46 +0000 (22:23 -0400)]
Release 2013.2
Colin Walters [Tue, 2 Apr 2013 02:18:56 +0000 (22:18 -0400)]
build: Add scripts to EXTRA_DIST
...because Automake apparently doesn't.
Colin Walters [Tue, 2 Apr 2013 01:52:24 +0000 (21:52 -0400)]
switchroot: Suppress compiler warning for asprintf
We're not going to run OOM here, if we do, we're totally screwed
anyways.
Colin Walters [Tue, 2 Apr 2013 01:36:40 +0000 (21:36 -0400)]
Release 2013.1
Colin Walters [Fri, 29 Mar 2013 21:16:03 +0000 (17:16 -0400)]
pull: Rework threading communication model
Previously, I've observed bugs where we either:
1) Exit too early, leaving undownloaded objects
2) Hang while downloading
This rewrite hopefully fixes both.
Colin Walters [Mon, 1 Apr 2013 22:53:12 +0000 (18:53 -0400)]
run-apache: Use -DFOREGROUND, not -X
-X implies debug mode which limits the workers to 1, which totally
kills parallelism.
Colin Walters [Mon, 1 Apr 2013 15:43:03 +0000 (11:43 -0400)]
core: Fix object enumeration for archive-z2 repositories
This makes fsck work again, among other things.
Colin Walters [Fri, 29 Mar 2013 21:22:56 +0000 (17:22 -0400)]
pull: Drop support for original archive repositories
For future refactoring here, it's just too complex to maintain support
for both of them, and the advantages of archive-z2 outweigh archive
too much.
Colin Walters [Tue, 26 Mar 2013 12:29:30 +0000 (08:29 -0400)]
tests: Update expected diff output
For previous diff commit.
Colin Walters [Mon, 18 Mar 2013 22:11:00 +0000 (18:11 -0400)]
admin: Assume we're using /ostree if there's a toplevel /usr
Mainly so admin install works without an existing /ostree again.
Colin Walters [Sat, 16 Mar 2013 21:45:15 +0000 (17:45 -0400)]
admin: Support installing pregenerated initramfs images from tree
Us running dracut is a hack, basically. We should default to
generating this on the server.
Colin Walters [Tue, 12 Mar 2013 22:45:27 +0000 (18:45 -0400)]
build: Bump GLib dependency to 2.34.0
Just cleaner than an unstable version.
Colin Walters [Tue, 12 Mar 2013 12:47:11 +0000 (08:47 -0400)]
config-diff: Properly print files relative to root
Just less ugly.
Colin Walters [Thu, 7 Mar 2013 21:46:41 +0000 (16:46 -0500)]
admin: Fix lookup of active root
This should hopefully *really* fix deleting running deployments
https://bugzilla.gnome.org/show_bug.cgi?id=694762
Colin Walters [Mon, 4 Mar 2013 23:00:23 +0000 (18:00 -0500)]
admin: Don't delete the running deployment
https://bugzilla.gnome.org/show_bug.cgi?id=694762
Colin Walters [Mon, 4 Mar 2013 16:52:43 +0000 (11:52 -0500)]
deploy: Don't run triggers if /usr/share/ostree/triggers-run exists
This is preparatory work for a future gnome-ostree commit where we'll
default to running triggers on the build server side.
Colin Walters [Tue, 26 Feb 2013 17:19:05 +0000 (12:19 -0500)]
Update libgsystem
Colin Walters [Sun, 24 Feb 2013 15:00:23 +0000 (10:00 -0500)]
core: Use default /sysroot/ostree/repo or just /ostree/repo as appropriate
The old logic was just weird, special casing root, and we can easily
autodetect the case where we need /ostree/repo.
Colin Walters [Sun, 24 Feb 2013 11:35:23 +0000 (06:35 -0500)]
build: Use AC_SYS_LARGEFILE
So we do the right thing on 32 bit.
Colin Walters [Sat, 23 Feb 2013 16:15:19 +0000 (11:15 -0500)]
pull-local: Don't call g_hash_table_init() on a NULL hash
Not sure why this wasn't crashing before.
Colin Walters [Sat, 23 Feb 2013 16:02:56 +0000 (11:02 -0500)]
core: Add API to convert csum -> checksum without malloc()
Just doing some profiling, this was in the top malloc() callers.
Colin Walters [Thu, 21 Feb 2013 18:05:14 +0000 (13:05 -0500)]
pull-local: Fix uninitialized variable ref
Colin Walters [Thu, 21 Feb 2013 16:18:29 +0000 (11:18 -0500)]
TODO: A few updates
Colin Walters [Thu, 21 Feb 2013 13:54:13 +0000 (08:54 -0500)]
pull-local: Output status even in non-tty case
This way I can see progress when running builddisks.
Colin Walters [Tue, 19 Feb 2013 16:02:33 +0000 (11:02 -0500)]
admin: Use /sysroot/ostree automatically
When booted inside an ostree system, we want /sysroot/ostree, not
just /ostree by default.
Colin Walters [Tue, 12 Feb 2013 01:46:53 +0000 (20:46 -0500)]
switchroot: Use MS_MOVE to / rather than chroot
This fixes a number of bugs; the two biggest are:
1) On shutdown systemd can correctly umount /
2) We can use linux-user-chroot inside the system, as is
necessary to do upgrades
See http://lists.freedesktop.org/archives/systemd-devel/2012-September/006703.html
Colin Walters [Fri, 1 Feb 2013 15:56:06 +0000 (10:56 -0500)]
pull-deploy: Allow switching trees too
$ ostree admin pull-deploy gnome-ostree trees/gnomeos-3.8-x86_64-devel
Now works to switch your current tree to -devel from the current
runtime.
Colin Walters [Mon, 28 Jan 2013 20:44:13 +0000 (15:44 -0500)]
pull-local: Fix crasher in previous commit when not connected to tty
Colin Walters [Mon, 28 Jan 2013 20:35:47 +0000 (15:35 -0500)]
pull-local: Port to GSConsole
Colin Walters [Mon, 28 Jan 2013 20:32:06 +0000 (15:32 -0500)]
pull-local: Support pulling checksums too
This matches what pull allows.
Colin Walters [Fri, 25 Jan 2013 20:19:34 +0000 (15:19 -0500)]
libgsystem: Update to the latest
Colin Walters [Thu, 24 Jan 2013 22:32:59 +0000 (17:32 -0500)]
admin: Don't overwrite previous ref unless it's different
We shouldn't overwrite deploy/<osname>/previous unless we actually
have something new.
This fixes the bug where two consecutive:
$ ostree admin upgrade foo
$ ostree admin upgrade foo
would end up pruning the data for foo/previous from the repo.
Colin Walters [Thu, 24 Jan 2013 20:38:06 +0000 (15:38 -0500)]
pull: Drop dead code to pad output strings too
This is in GSConsole now.
Colin Walters [Thu, 24 Jan 2013 20:22:16 +0000 (15:22 -0500)]
Port ostree-pull to GSConsole
As part of this, we need to ensure our streams are inherited across
the chain of child processes.
Colin Walters [Wed, 23 Jan 2013 20:20:19 +0000 (15:20 -0500)]
Update to the latest libgsystem
Colin Walters [Fri, 18 Jan 2013 13:38:09 +0000 (08:38 -0500)]
admin install: Ensure /ostree is initialized first
https://bugzilla.gnome.org/show_bug.cgi?id=692008
Colin Walters [Fri, 18 Jan 2013 03:08:21 +0000 (22:08 -0500)]
admin: Ensure /var/log/journal exists
This is admittedly a hack, since the story is that services should be
handling /var on their own. But on the other hand the current systemd
story is that admins should create it to enable it. Possibly a better
fix is --enable-journal-always or something for systemd.
Colin Walters [Wed, 9 Jan 2013 09:32:51 +0000 (04:32 -0500)]
update-kernel: Change dracut to use tmpdir on host, fix deploy path lookup
We had a bit of legacy code that looked for "current" if the deploy
path was unspecified; this needs to be deploy/OSNAME/current.
Secondly, we need to point dracut at a tmpdir outside of the root when
doing FUSE, because directories with mode 0700 and owned by root:root
aren't writable.
Also update libgsystem to the latest.
Colin Walters [Tue, 8 Jan 2013 18:57:24 +0000 (13:57 -0500)]
admin: Add --no-bootloader option to update-kernel
Will be used by the QA scripts, since we need to inspect the kernel
configuration and generate a correct grub conf from that, rather than
trying to have update-bootloader reuse an existing config, since there
won't be one initially.
Colin Walters [Tue, 8 Jan 2013 12:04:29 +0000 (07:04 -0500)]
Update to the latest libgsystem
Colin Walters [Sun, 6 Jan 2013 16:47:40 +0000 (11:47 -0500)]
admin update-kernel: Drop support for booting from host kernel
Now that gnome-ostree has a kernel, this functionality is no longer
necessary. It was always a hack.
Colin Walters [Sun, 6 Jan 2013 11:43:49 +0000 (06:43 -0500)]
admin update-kernel: Ensure initramfs has correct owner/mode
It was 0600, and owned by the creating process (in the fuse case,
non-root!). We want it 0644/root/root.
Colin Walters [Sun, 6 Jan 2013 11:12:42 +0000 (06:12 -0500)]
admin: Propagate --boot-dir to subcommands
Really, I should be using internal functions here...
Colin Walters [Sat, 5 Jan 2013 00:47:56 +0000 (19:47 -0500)]
core: Drop dead prototypes from header
Followup to previous commit.
Colin Walters [Sat, 5 Jan 2013 00:46:02 +0000 (19:46 -0500)]
core: Reuse more libgsystem API in utils
More code drain to libgsystem.
Colin Walters [Sat, 5 Jan 2013 00:32:26 +0000 (19:32 -0500)]
core: Ensure kernel and initramfs are put into place with fdatasync()
Via a new libgsystem API.
Colin Walters [Fri, 4 Jan 2013 22:25:32 +0000 (17:25 -0500)]
core: Drain fdatasync() API into libgsystem
Just code cleanup.
Colin Walters [Thu, 3 Jan 2013 03:44:06 +0000 (22:44 -0500)]
admin: Allow specifying --boot-dir
This is intended for use by QA tools that want to manipulate a
loopback-mounted disk image or the like.